package leetcode_181_200;

public class rob_198 {
    public int rob(int[] nums) {
        //存储每一天的状态，上一家已偷，和上一家未偷
        //也可以最多连续两天不偷
        //如 2,1,1,2
        // 都存储，今天离开能到手最多钱
        int n=nums.length;
        int llNotStealed=nums[0];     //两天不偷
        int lastNotStealed=nums[0];
        int lastStealed=nums[0];
        for(int i=1;i<n;i++){
            int t=lastNotStealed;
            int a= i < 2 ? 0 : lastStealed  ;    //前天偷完后的利润
            int b= i < 3 ? 0 : lastNotStealed-nums[i-1]; //大前天利润,  (昨天的数据lastNotStealed，即前天未偷过，即昨天偷过，减去昨天利润即结果)
            //两天不偷,就大前天的利润加上今天
            if( i >1) llNotStealed=b+nums[i];
            //昨天没偷过，今天可以偷，可以带走（前天偷完后的利润加今天）或者（大前天偷完后的利润加今天）
            lastNotStealed=Math.max(a+nums[i] , b+nums[i]);
            //昨天偷过，今天不能偷, 带走昨天偷完后的利润
            lastStealed= t  ;
        }
        return Math.max(Math.max(lastStealed,lastNotStealed),llNotStealed);
    }
}
